home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1996 #5
/
Amiga Plus CD - 1996 - No. 5.iso
/
pd
/
grafik
/
showcomment
/
showcomment.rexx
< prev
Wrap
OS/2 REXX Batch file
|
1995-05-21
|
3KB
|
100 lines
/* $VER: ShowComment 1.03 (21.5.95)© Felix C. Coronado
*/
OPTIONS RESULTS
/*If you are low on memory, you might want to make this smaller, but it
should stay in the range of 3 - 65535*/
BlockSize=65535
NL='0A'x
LUP='1B'x||'M'
PARSE ARG FullFileName
SAY '1B5B316D'x||'ShowComment 1.03 - Copyright (c) 1995 by Felix C. Coronado'||'1B5B306D'x||NL
IF FullFileName='' THEN DO
SAY 'No file was selected'
EXIT
END
IF LEFT(FullFileName,1)='"'& RIGHT(FullFileName,1)='"' THEN FullFileName=SUBSTR(FullFileName,2,LENGTH(FullFileName)-2)
IF ~EXISTS(FullFileName) THEN DO
SAY "Could not find '"||FullFileName||"'"
EXIT
END
IF OPEN(File,FullFileName,R) THEN DO
FileType=ReadCh(File,10)
IF LEFT(FileType,6)~='GIF87a' & LEFT(FileType,6)~='GIF89a' & (LEFT(FileType,4)~='FFD8FFE0'x | RIGHT(FileType,4)~='JFIF') THEN DO
SAY "'"||FullFileName||"' Not a JPEG or GIF file"
EXIT
END
Comment=''
SAY "Searching for comments in '"||FullFileName||"'..."||NL||,
"Ctrl-d to stop"
IF LEFT(FileType,4)='FFD8FFE0'x & RIGHT(FileType,4)='JFIF' THEN DO
SIGNAL ON BREAK_D
BlockNum=0
SearchVar=''
ComNum=0
StartPos=SEEK(File,10,'C')
DO WHILE ~EOF(File)
BlockNum=BlockNum+1
SearchVar=RIGHT(SearchVar,1)||READCH(File,BlockSize-1)
IF INDEX(SearchVar,'FFFE'x)~=0 THEN DO
ComNum=ComNum+1
ComLengthPos=StartPos+(BlockNum-1)*(BlockSize-1)+INDEX(SearchVar,'FFFE'x)
CALL SEEK(File,ComLengthPos,'B')
ComLength=C2D(READCH(File,2))-2
Comment=Comment||NL||,
NL||,
'1B5B316D'x||'Comment '||ComNum||':'||'1B5B306D'x||NL||,
STRIP(COMPRESS(READCH(File,ComLength),'0D'x),'B','0A'x)
BlockNum=0
SearchVar=''
StartPos=SEEK(File,0,'C')
END
END
SIGNAL OFF BREAK_D
END
IF LEFT(FileType,6)='GIF89a' THEN DO
SIGNAL ON BREAK_D
BlockNum=0
SearchVar=''
ComNum=0
StartPos=SEEK(File,6,'B')
DO WHILE ~EOF(File)
BlockNum=BlockNum+1
SearchVar=RIGHT(SearchVar,2)||READCH(File,BlockSize-2)
IF INDEX(SearchVar,'0021FE'x)~=0 THEN DO
ComNum=ComNum+1
ComLengthPos=StartPos+(BlockNum-1)*(BlockSize-2)+INDEX(SearchVar,'0021FE'x)
CALL SEEK(File,ComLengthPos,'B')
ComLength=C2D(READCH(File,1))
Comment=Comment||NL||,
NL||,
'1B5B316D'x||'Comment '||ComNum||':'||'1B5B306D'x||NL||,
STRIP(COMPRESS(READCH(File,ComLength),'0D'x),'L','0A'x)
ComLength=C2D(READCH(File,1))
DO WHILE ComLength~=0 & ~EOF(File)
Comment=Comment||COMPRESS(READCH(File,ComLength),'0D'x)
ComLength=C2D(READCH(File,1))
END
Comment=STRIP(Comment,'T','0A'x)
BlockNum=0
SearchVar=''
StartPos=SEEK(File,-1,'C')
END
END
SIGNAL OFF BREAK_D
END
SAY LUP||'Finished. '
END
ELSE DO
SAY "Error opening '"||FullFileName||"'"
EXIT
END
BREAK_D:
SearchVar=''
CALL CLOSE(File)
IF Comment~='' THEN SAY LUP||Comment
ELSE SAY NL||,
'1B5B316D'x||'No Comment'||'1B5B306D'x